package com.example.interceptor;

import com.example.domain.User;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * @author luo
 */
public class UserLoginInterceptor implements HandlerInterceptor {

    /***
     * 在请求处理之前进行调用(Controller方法调用之前)
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //System.out.println("执行了拦截器的preHandle方法");

        HttpSession session = request.getSession();
        User user =new User();
        //统一拦截（查询当前session是否存在username和password）(这里user会在每次登录成功后，写入session)
        boolean username = (boolean) session.getAttribute("username");
        boolean password = (boolean) session.getAttribute("password");
        if (username && password) {
            return true;
        }else {
//            response.sendRedirect("/pages/login/login.html");
            request.getRequestDispatcher("/pages/login/login.html").forward(request,response);
            System.out.println("拦截-------------------");
            return false;
        }

        //如果设置为false时，被请求时，拦截器执行到此处将不会继续操作
        //如果设置为true时，请求将会继续执行后面的操作
        //return true;
    }

    /***
     * 请求处理之后进行调用，但是在视图被渲染之前（Controller方法调用之后）
     */
/*    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("执行了拦截器的postHandle方法");
    }

    *//***
     * 整个请求结束之后被调用，也就是在DispatchServlet渲染了对应的视图之后执行（主要用于进行资源清理工作）
     *//*
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("执行了拦截器的afterCompletion方法");
    }*/
}